move destruction of the private GdkGC from finalize() to unrealize().
authorMichael Natterer <mitch@imendio.com>
Mon, 23 Jan 2006 10:46:02 +0000 (10:46 +0000)
committerMichael Natterer <mitch@src.gnome.org>
Mon, 23 Jan 2006 10:46:02 +0000 (10:46 +0000)
2006-01-23  Michael Natterer  <mitch@imendio.com>

* gtk/gtkcolorbutton.c: move destruction of the private GdkGC
from finalize() to unrealize(). Fixes BadMatch on display change
(bug #85715).

ChangeLog
ChangeLog.pre-2-10
gtk/gtkcolorbutton.c

index c5bce98c2f1aeec34b9bdb3879fb934c5f3399f3..8f1cb62f3b471847da0c45ddba8b12e7c35278b2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2006-01-23  Michael Natterer  <mitch@imendio.com>
+
+       * gtk/gtkcolorbutton.c: move destruction of the private GdkGC
+       from finalize() to unrealize(). Fixes BadMatch on display change
+       (bug #85715).
+
 2006-01-22  Kristian Rietveld  <kris@gtk.org>
 
        * gtk/gtktreeview.c (gtk_tree_view_bin_expose): Revert previous
index c5bce98c2f1aeec34b9bdb3879fb934c5f3399f3..8f1cb62f3b471847da0c45ddba8b12e7c35278b2 100644 (file)
@@ -1,3 +1,9 @@
+2006-01-23  Michael Natterer  <mitch@imendio.com>
+
+       * gtk/gtkcolorbutton.c: move destruction of the private GdkGC
+       from finalize() to unrealize(). Fixes BadMatch on display change
+       (bug #85715).
+
 2006-01-22  Kristian Rietveld  <kris@gtk.org>
 
        * gtk/gtktreeview.c (gtk_tree_view_bin_expose): Revert previous
index 1dc8d6de059c0bab1f60983e604b3f96a67189ce..a346c1d5de9f3f3d37b9b1b3675f57b4fc7ab67e 100644 (file)
@@ -103,6 +103,7 @@ static void gtk_color_button_get_property  (GObject        *object,
 
 /* gtkwidget signals */
 static void gtk_color_button_realize       (GtkWidget *widget);
+static void gtk_color_button_unrealize     (GtkWidget *widget);
 static void gtk_color_button_state_changed (GtkWidget           *widget, 
                                            GtkStateType         previous_state);
 static void gtk_color_button_style_set     (GtkWidget *widget, 
@@ -184,6 +185,7 @@ gtk_color_button_class_init (GtkColorButtonClass *klass)
   gobject_class->finalize = gtk_color_button_finalize;
   widget_class->state_changed = gtk_color_button_state_changed;
   widget_class->realize = gtk_color_button_realize;
+  widget_class->unrealize = gtk_color_button_unrealize;
   widget_class->style_set = gtk_color_button_style_set;
   button_class->clicked = gtk_color_button_clicked;
   klass->color_set = NULL;
@@ -412,6 +414,18 @@ gtk_color_button_realize (GtkWidget *widget)
   render (color_button);
 }
 
+static void
+gtk_color_button_unrealize (GtkWidget *widget)
+{
+  GtkColorButton *color_button = GTK_COLOR_BUTTON (widget);
+
+  if (color_button->priv->gc)
+    g_object_unref (color_button->priv->gc);
+  color_button->priv->gc = NULL;
+
+  GTK_WIDGET_CLASS (parent_class)->unrealize (widget);
+}
+
 static void
 gtk_color_button_style_set (GtkWidget *widget, 
                            GtkStyle  *previous_style)
@@ -614,10 +628,6 @@ gtk_color_button_finalize (GObject *object)
 {
   GtkColorButton *color_button = GTK_COLOR_BUTTON (object);
 
-  if (color_button->priv->gc != NULL)
-    g_object_unref (color_button->priv->gc);
-  color_button->priv->gc = NULL;
-
   if (color_button->priv->cs_dialog != NULL)
     gtk_widget_destroy (color_button->priv->cs_dialog);
   color_button->priv->cs_dialog = NULL;